Vscode编译调试C++程序

您所在的位置:网站首页 vs code 编译调试 Vscode编译调试C++程序

Vscode编译调试C++程序

2024-01-29 06:55| 来源: 网络整理| 查看: 265

一、简介

本文讲述在windows平台下在Vscode中使用g++编译本地C++程序,并使用gdb调试的方法。可能有些朋友会说:windows上不是已经有visual studio这个最强IDE了吗,为什么还要用Vscode调试?是的,确实没错,单纯用Vscode编译调试本地程序确实没什么用。但是用它来远程调试linux程序就很有用了。试想一下这么一个场景:你的linux服务器/linux应用程序部署在客户现场,客户的电脑配置和环境跟你开发用的电脑不一样,客户电脑中没有也不能安装IDE。这时候他们那边出现了你开发过程中没有遇到的bug。老板叫你到那边出差调试,但你不想去,你想:如果这个时候你可以在本机(公司开发的电脑)上远程调试客户电脑上的程序,那该多好啊。没错,在博主的另一篇文章《VsCode + gdb + gdbserver远程调试C++程序》讲述了远程调试的方法。而本篇文章则相当于该文章的前置学习文章,可以让大家更了解Vscode的使用。

二、安装插件和其它依赖

首先在Vscode中安装如下插件:

C/C++

C/C++ Extension Pack

Code Runner

在​ ​​​​​​https://jmeubank.github.io/tdm-gcc/

下载一个最新的gcc

安装gcc后,在cmd中执行命令:gcc -v。如果看到有如下输出,则表明gcc安装成功了。

三、创建项目

在Windows中新建文件夹(比如Test1A),新建main.cpp作为测试用的例子

在main.cpp中增加内容如下:

#include int main() { printf("hello world\n"); getchar(); return 0; }

在Vscode中:文件 -> 打开文件夹。打开上述文件夹Test1A

然后可以看到刚刚创建的文件夹和文件都已经被添加进来了。

四、编译运行项目

然后我们还得改Vscode设置,否则编译运行时会出现问题。文件 -> 首选项 -> 设置 -> 用户 -> 扩展 -> Run Code Configuration,把里面的Run In Terminal 选项勾上

 

完成上述操作后,重启Vscode。鼠标右键单机Vscode的代码编辑区,在出现的右键菜单中,点击“Run Code”

然后我们可以看到在项目目录下生成了main.exe。

在Vscode的终端中可以看到输出了我们代码中的内容(下图中的"4"是为了让代码中的getchar()能执行下去)

注意:在Vscode中编译C++程序是有局限性的,而且经常会导致各种各样的问题,所以我们一般在cmd或者linux的终端中通过命令行或者makefile编译好程序,再通过Vscode调试。

五、通过GDB调试程序

运行 -> 启动调试。选择C++(GDB/LLDB)-> g++.exe

可以看到执行上述操作后生成了launch.json

我们得对里面的一些配置(主要就是下面的三个参数)进行修改。为了避免出错,都改成绝对路径。其中:

program:调试入口文件的地址

cwd:程序启动调试的目录

miDebuggerPath:调试器的路径

{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "g++.exe - 生成和调试活动文件", "type": "cppdbg", "request": "launch", "program": "D:\\Demo\\test\\gdb\\Test1A\\main.exe", "args": [], "stopAtEntry": false, "cwd": "D:\\Demo\\test\\gdb\\Test1A", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "D:\\SoftWare\\TDM-GCC-64\\bin\\gdb.exe", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++.exe 生成活动文件" } ] }

在main.cpp中设置断点,重新按F5

可以看到可以调试了

注意:如果设置断点后,调试出现报错:Module containing this breakpoint has not yet loaded or the breakpoint address not be obtained。 

则要手动在控制台中添加-g选项编译程序(这也是在Vscode中编译C++程序的局限性之一)

六、参考

《windows 10上使用vscode编译运行和调试C/C++》



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3